package com.ctf.soft.ms.utils;

import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 名称： DateUtil<br>
 * 描述： 日期工具类<br>
 * 最近修改时间：2015/7/30 14:12<br>
 * 修改说明：
 *
 * @author jiajl
 */
public class DateUtil {

    /**
     * 描述： 获取当前日期格式"yyyy-MM-dd HH:mm:ss"
     *
     * @return String日期
     */
    public static String getCurrentTime() {
        Date dt = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String currentDate = formatter.format(dt);
        return currentDate.trim();
    }

    /**
     * 描述： 获取当前日期格式
     *
     * @param format 格式化参数("yyyy-MM-dd HH:mm:ss"、"yyyy-MM-dd")
     * @return String日期
     */
    public static String getCurrentTime(String format) {
        Date dt = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        String currentDate = formatter.format(dt);
        return currentDate.trim();
    }

    /**
     * 描述： 日期格式转化  DateToString
     *
     * @param dt     Date日期
     * @param format 格式化参数("yyyy-MM-dd HH:mm:ss"、"yyyy-MM-dd")
     * @return String日期
     */
    public static String getDateToStr(Date dt, String format) {
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        String dateString = formatter.format(dt);
        return dateString.trim();
    }

    /**
     * 描述： 日期格式转化  StringToDate
     *
     * @param strDate String日期
     * @param format  格式化参数("yyyy-MM-dd HH:mm:ss"、"yyyy-MM-dd")
     * @return Date日期
     */
    public static Date getStrToDate(String strDate, String format) {
        SimpleDateFormat formatter = new SimpleDateFormat(format);
        ParsePosition pos = new ParsePosition(0);
        Date dt = formatter.parse(strDate, pos);
        return dt;
    }

    /**
     * 描述： 日期格式转化  StringTolong
     *
     * @param strDate String日期
     * @return 单位秒
     */
    public static long getStrToLong(String strDate) {
        if (ToolsUtil.isEmpty(strDate)) return 0;
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        ParsePosition pos = new ParsePosition(0);
        Date dt = formatter.parse(strDate, pos);
        return dt.getTime() / 1000;
    }

    /**
     * 描述： 日期格式转化  longToString
     *
     * @param time 单位秒
     * @return String日期(格式：yyyy-MM-dd HH:mm:ss)
     */
    public static String getLongToStr(long time) {
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return formatter.format(time * 1000).trim();
    }

    /**
     * 描述：通过当前日期获取星期
     *
     * @return 格式：yyyy 年 MM 月 dd 日 星期X
     */
    public static String getWeekOfDate() {
        Date dt = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy 年 MM 月 dd 日");
        String currentDate = formatter.format(dt);
        String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        Calendar cal = Calendar.getInstance();
        cal.setTime(dt);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0)
            w = 0;
        return currentDate + " " + weekDays[w];
    }

    /**
     * 描述：通过当前日期获取星期
     *
     * @return 格式：星期X
     */
    public static String getWeekOfToday() {
        Date dt = new Date();
        String[] weekDays = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
        Calendar cal = Calendar.getInstance();
        cal.setTime(dt);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        if (w < 0)
            w = 0;
        return weekDays[w];
    }
}
